package com.winhxd.b2c.order.service;

import com.winhxd.b2c.common.domain.PagedList;
import com.winhxd.b2c.common.domain.order.condition.OrderAfterSaleApplyCondition;
import com.winhxd.b2c.common.domain.order.condition.OrderQueryCondition;
import com.winhxd.b2c.common.domain.order.model.OrderAfterSaleDetail;
import com.winhxd.b2c.common.domain.order.vo.OrderInfoAfterSaleVO;

import java.util.List;

/**
 * @Description: 售后明细
 * @author lining
 * @date 2019/1/8 14:11:30
 */
public interface OrderAfterSaleDetailService {

	/**
	 * @Description 保存售后明细
	 * @author lining
	 * @date 2019/1/8 14:12:23
	 * @param afterSaleDetail
	 * @return Integer
	 */
	Integer saveOrderAfterSaleDetail(OrderAfterSaleDetail afterSaleDetail);

	/**
	 * @Description 保存售后信息
	 * @author lining
	 * @date 2019/1/8 14:19:02
	 * @param condition
	 * @return
	 */
	void saveOrderAfterSale(OrderAfterSaleApplyCondition condition);

	/**
	 * @Description 修改售后信息
	 * @author lining
	 * @date 2019/1/8 15:28:13
	 * @param afterSaleDetail
	 * @return
	 */
	Integer updateOrderAfterSaleDetail(OrderAfterSaleDetail afterSaleDetail);

	/**
	 * @Description 验证是否已经售后
	 * @author lining
	 * @date 2019/1/10 18:49:20
	 * @param afterSaleDetail
	 * @return true-已有售后 false-无售后
	 */
	boolean validateCanApply(OrderAfterSaleDetail afterSaleDetail);

	/**
	 * @Description 验证订单自动关闭时间
	 * @author lining
	 * @date 2019/1/10 19:12:12
	 * @param orderNo
	 * @return true-未到关闭时间 false-已经到关闭时间
	 */
	boolean validateOrderAutoReceiveTime(String orderNo);

	/**
	 * @Description 撤回售后申请
	 * @author lining
	 * @date 2019/1/10 20:28:13
	 * @param afterSaleDetail
	 * @return
	 */
	Integer cancelOrderAfterSaleApply(OrderAfterSaleDetail afterSaleDetail);

	/**
	 * @Description 验证订单是否完成
	 * @author lining
	 * @date 2019/1/12 11:46:50
	 * @param orderNo
	 * @return 1-订单未完成 2-订单已完成 3-订单已关闭
	 */
	int getOrderStatus(String orderNo);

	/**
	 * @Description 修改订单状态
	 * @author lining
	 * @date 2019/1/12 16:03:23
	 * @param orderNo
	 * @return
	 */
	void updateOrderStatus(String orderNo);

	/**
	 * @Description 小程序售后列表
	 * @author lining
	 * @date 2019/1/17 20:40:37
	 * @param condition
	 * @return
	 */
	PagedList<OrderInfoAfterSaleVO> selectAfterSaleInfo(OrderQueryCondition condition);

	/**
	 * @Description 小程序售后详情
	 * @author lining
	 * @date 2019/1/17 20:42:05
	 * @param condition
	 * @return
	 */
	OrderInfoAfterSaleVO getAfterSaleInfo(OrderQueryCondition condition);

	/**
	 * @Description 手动关闭售后
	 * @author lining
	 * @date 2019/1/21 17:44:23
	 * @param afterSaleDetailId  customerId
	 * @return
	 */
	void closeAfterSale(Long afterSaleDetailId,Long customerId);

	/**
	 * @Description 验证售后强制关闭
	 * @author lining
	 * @date 2019/1/21 18:54:39
	 * @param afterSaleDetailId
	 * @return
	 */
	void validateCloseAfterSaleStatus(Long afterSaleDetailId);

	/**
	 * @Description 修改收益状态(订单闭环)
	 * @author lining
	 * @date 2019/1/17 10:39:40
	 * @param orderNo
	 * @return
	 */
	void updateRebateRecord(String orderNo);
}
